import { createApp } from 'vue'
import App from '@/App.vue'

import '@/styles/main.scss'
import 'virtual:uno.css'
// 全局引入svg图标注册器
import 'virtual:svg-icons-register'

// 引入vue-i18n实例
import i18n from "@/locales/index.ts";
// 引入对外暴露的pinia实例
import pinia from "@/stores/index.ts";
// 引入定义的路由
import router from "@/router/index.ts";
// 引入自定义插件管理器
import PluginManager from "@/plugins/PluginManager.ts";
import {directive} from "@/directives";

// vue 相关的 api 使用参考 https://cn.vuejs.org/api/
// 创建vue实例
const app = createApp(App);
// 注册自定义指令
directive(app)

// 直接采用批量自定义插件安装 installPlugins
const pluginManager = new PluginManager();
pluginManager.installPlugins(app);

// 注册i18n
app.use(i18n);
// 注册pinia
app.use(pinia)
// 注册路由
app.use(router)


// 将vue实例挂载到#app元素上
app.mount('#app')


// 用于为应用内抛出的未捕获错误指定一个全局处理函数
app.config.errorHandler = (err, instance, info) => {
    // 处理错误，例如：报告给一个服务
    console.log("the error is: " + err);
}

// 用于为应用内的非错误警告指定一个全局处理函数
// app.config.warnHandler = (msg, instance, trace) => {
//     // `trace` 是组件层级结构的追踪
// }

// 设置此项为 true 可以在浏览器开发工具的“性能/时间线”页中启用对组件初始化、编译、渲染和修补的性能表现追踪。仅在开发模式和支持 performance.mark API 的浏览器中工作。
app.config.performance = true // 开启性能监控


// 检测vue版本
console.log("app version: " + app.version)
const version = Number(app.version.split('.')[0])
console.log("vue version: " + version)
if (version < 3) {
    console.warn('This plugin requires Vue 3')
}
